#include <iostream>
#include <string>
#include <regex>


int main()
{
    std::string str = "/numbers/1234";  //现在我们想提取出里面的数字字符串
    std::regex e("/numbers/(\\d+)");    //括号表示提取数字
    /*  \d在正则表达式里表示数字
        +表示匹配前面子表达式一次或多次
        转的时候：第一步：字符串转义。第二步：正则表达式转义
        \d在字符串里表示对d字符进行转义 \\在字符串里表示\，所以在字符串里\\d才表示正则表达式的\d
    */
    std::smatch matches;
    bool ret = std::regex_match(str, matches, e);
    if (ret == false)
    {
        return -1;  //字符串整体匹配失败就返回false
    }
    for (auto& s : matches)
    {
        //因为我们在匹配的时候，首先是一个整体的规则匹配，看整体的是否匹配成功，首先匹配到的肯定是原始字符串，
        //所以首先存储了原始字符串，然后再去存储我们想要提取出来的字符串。所以首先打印的是原始字符串
        std::cout << s << std::endl;
    }
    return 0;
}